/**
 */
package org.mro.grib.model.files.secondEdition.sections.impl;

import java.nio.ByteBuffer;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;

import org.mro.grib.model.files.secondEdition.sections.IdentificationSection;
import org.mro.grib.model.files.secondEdition.sections.SectionsPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Identification Section</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getStartOffset <em>Start Offset</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getEndOffset <em>End Offset</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getLength <em>Length</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getIdentificationOfOriginatingCentre <em>Identification Of Originating Centre</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getIdentificationOfOriginatingSubcentre <em>Identification Of Originating Subcentre</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getGribMasterTablesVersion <em>Grib Master Tables Version</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getGribLocalTablesVersion <em>Grib Local Tables Version</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getSignificanceOfReferenceTime <em>Significance Of Reference Time</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getYear <em>Year</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getMonth <em>Month</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getDay <em>Day</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getHour <em>Hour</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getMinute <em>Minute</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getSecond <em>Second</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getProductionStatus <em>Production Status</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.sections.impl.IdentificationSectionImpl#getTypeOfData <em>Type Of Data</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class IdentificationSectionImpl extends EObjectImpl implements IdentificationSection {
	/**
	 * The default value of the '{@link #getStartOffset() <em>Start Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getStartOffset()
	 * @generated
	 * @ordered
	 */
	protected static final long START_OFFSET_EDEFAULT = 0L;

	/**
	 * The cached value of the '{@link #getStartOffset() <em>Start Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getStartOffset()
	 * @generated
	 * @ordered
	 */
	protected long startOffset = START_OFFSET_EDEFAULT;

	/**
	 * The default value of the '{@link #getEndOffset() <em>End Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getEndOffset()
	 * @generated
	 * @ordered
	 */
	protected static final long END_OFFSET_EDEFAULT = 0L;

	/**
	 * The cached value of the '{@link #getEndOffset() <em>End Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getEndOffset()
	 * @generated
	 * @ordered
	 */
	protected long endOffset = END_OFFSET_EDEFAULT;

	/**
	 * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLength()
	 * @generated
	 * @ordered
	 */
	protected static final int LENGTH_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLength()
	 * @generated
	 * @ordered
	 */
	protected int length = LENGTH_EDEFAULT;

	/**
	 * The default value of the '{@link #getIdentificationOfOriginatingCentre() <em>Identification Of Originating Centre</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getIdentificationOfOriginatingCentre()
	 * @generated
	 * @ordered
	 */
	protected static final short IDENTIFICATION_OF_ORIGINATING_CENTRE_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getIdentificationOfOriginatingCentre() <em>Identification Of Originating Centre</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getIdentificationOfOriginatingCentre()
	 * @generated
	 * @ordered
	 */
	protected short identificationOfOriginatingCentre = IDENTIFICATION_OF_ORIGINATING_CENTRE_EDEFAULT;

	/**
	 * The default value of the '{@link #getIdentificationOfOriginatingSubcentre() <em>Identification Of Originating Subcentre</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getIdentificationOfOriginatingSubcentre()
	 * @generated
	 * @ordered
	 */
	protected static final short IDENTIFICATION_OF_ORIGINATING_SUBCENTRE_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getIdentificationOfOriginatingSubcentre() <em>Identification Of Originating Subcentre</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getIdentificationOfOriginatingSubcentre()
	 * @generated
	 * @ordered
	 */
	protected short identificationOfOriginatingSubcentre = IDENTIFICATION_OF_ORIGINATING_SUBCENTRE_EDEFAULT;

	/**
	 * The default value of the '{@link #getGribMasterTablesVersion() <em>Grib Master Tables Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGribMasterTablesVersion()
	 * @generated
	 * @ordered
	 */
	protected static final byte GRIB_MASTER_TABLES_VERSION_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getGribMasterTablesVersion() <em>Grib Master Tables Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGribMasterTablesVersion()
	 * @generated
	 * @ordered
	 */
	protected byte gribMasterTablesVersion = GRIB_MASTER_TABLES_VERSION_EDEFAULT;

	/**
	 * The default value of the '{@link #getGribLocalTablesVersion() <em>Grib Local Tables Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGribLocalTablesVersion()
	 * @generated
	 * @ordered
	 */
	protected static final byte GRIB_LOCAL_TABLES_VERSION_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getGribLocalTablesVersion() <em>Grib Local Tables Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGribLocalTablesVersion()
	 * @generated
	 * @ordered
	 */
	protected byte gribLocalTablesVersion = GRIB_LOCAL_TABLES_VERSION_EDEFAULT;

	/**
	 * The default value of the '{@link #getSignificanceOfReferenceTime() <em>Significance Of Reference Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSignificanceOfReferenceTime()
	 * @generated
	 * @ordered
	 */
	protected static final byte SIGNIFICANCE_OF_REFERENCE_TIME_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getSignificanceOfReferenceTime() <em>Significance Of Reference Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSignificanceOfReferenceTime()
	 * @generated
	 * @ordered
	 */
	protected byte significanceOfReferenceTime = SIGNIFICANCE_OF_REFERENCE_TIME_EDEFAULT;

	/**
	 * The default value of the '{@link #getYear() <em>Year</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getYear()
	 * @generated
	 * @ordered
	 */
	protected static final short YEAR_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getYear() <em>Year</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getYear()
	 * @generated
	 * @ordered
	 */
	protected short year = YEAR_EDEFAULT;

	/**
	 * The default value of the '{@link #getMonth() <em>Month</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMonth()
	 * @generated
	 * @ordered
	 */
	protected static final byte MONTH_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getMonth() <em>Month</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMonth()
	 * @generated
	 * @ordered
	 */
	protected byte month = MONTH_EDEFAULT;

	/**
	 * The default value of the '{@link #getDay() <em>Day</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDay()
	 * @generated
	 * @ordered
	 */
	protected static final byte DAY_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getDay() <em>Day</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDay()
	 * @generated
	 * @ordered
	 */
	protected byte day = DAY_EDEFAULT;

	/**
	 * The default value of the '{@link #getHour() <em>Hour</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHour()
	 * @generated
	 * @ordered
	 */
	protected static final byte HOUR_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getHour() <em>Hour</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHour()
	 * @generated
	 * @ordered
	 */
	protected byte hour = HOUR_EDEFAULT;

	/**
	 * The default value of the '{@link #getMinute() <em>Minute</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinute()
	 * @generated
	 * @ordered
	 */
	protected static final byte MINUTE_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getMinute() <em>Minute</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinute()
	 * @generated
	 * @ordered
	 */
	protected byte minute = MINUTE_EDEFAULT;

	/**
	 * The default value of the '{@link #getSecond() <em>Second</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSecond()
	 * @generated
	 * @ordered
	 */
	protected static final byte SECOND_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getSecond() <em>Second</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSecond()
	 * @generated
	 * @ordered
	 */
	protected byte second = SECOND_EDEFAULT;

	/**
	 * The default value of the '{@link #getProductionStatus() <em>Production Status</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getProductionStatus()
	 * @generated
	 * @ordered
	 */
	protected static final byte PRODUCTION_STATUS_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getProductionStatus() <em>Production Status</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getProductionStatus()
	 * @generated
	 * @ordered
	 */
	protected byte productionStatus = PRODUCTION_STATUS_EDEFAULT;

	/**
	 * The default value of the '{@link #getTypeOfData() <em>Type Of Data</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTypeOfData()
	 * @generated
	 * @ordered
	 */
	protected static final byte TYPE_OF_DATA_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getTypeOfData() <em>Type Of Data</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTypeOfData()
	 * @generated
	 * @ordered
	 */
	protected byte typeOfData = TYPE_OF_DATA_EDEFAULT;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IdentificationSectionImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return SectionsPackage.Literals.IDENTIFICATION_SECTION;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public long getStartOffset() {
		return startOffset;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setStartOffset(long newStartOffset) {
		long oldStartOffset = startOffset;
		startOffset = newStartOffset;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__START_OFFSET, oldStartOffset, startOffset));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public long getEndOffset() {
		return endOffset;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEndOffset(long newEndOffset) {
		long oldEndOffset = endOffset;
		endOffset = newEndOffset;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__END_OFFSET, oldEndOffset, endOffset));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getLength() {
		return length;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLength(int newLength) {
		int oldLength = length;
		length = newLength;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__LENGTH, oldLength, length));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public short getIdentificationOfOriginatingCentre() {
		return identificationOfOriginatingCentre;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setIdentificationOfOriginatingCentre(short newIdentificationOfOriginatingCentre) {
		short oldIdentificationOfOriginatingCentre = identificationOfOriginatingCentre;
		identificationOfOriginatingCentre = newIdentificationOfOriginatingCentre;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_CENTRE, oldIdentificationOfOriginatingCentre, identificationOfOriginatingCentre));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public short getIdentificationOfOriginatingSubcentre() {
		return identificationOfOriginatingSubcentre;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setIdentificationOfOriginatingSubcentre(short newIdentificationOfOriginatingSubcentre) {
		short oldIdentificationOfOriginatingSubcentre = identificationOfOriginatingSubcentre;
		identificationOfOriginatingSubcentre = newIdentificationOfOriginatingSubcentre;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_SUBCENTRE, oldIdentificationOfOriginatingSubcentre, identificationOfOriginatingSubcentre));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getGribMasterTablesVersion() {
		return gribMasterTablesVersion;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGribMasterTablesVersion(byte newGribMasterTablesVersion) {
		byte oldGribMasterTablesVersion = gribMasterTablesVersion;
		gribMasterTablesVersion = newGribMasterTablesVersion;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__GRIB_MASTER_TABLES_VERSION, oldGribMasterTablesVersion, gribMasterTablesVersion));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getGribLocalTablesVersion() {
		return gribLocalTablesVersion;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGribLocalTablesVersion(byte newGribLocalTablesVersion) {
		byte oldGribLocalTablesVersion = gribLocalTablesVersion;
		gribLocalTablesVersion = newGribLocalTablesVersion;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__GRIB_LOCAL_TABLES_VERSION, oldGribLocalTablesVersion, gribLocalTablesVersion));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getSignificanceOfReferenceTime() {
		return significanceOfReferenceTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSignificanceOfReferenceTime(byte newSignificanceOfReferenceTime) {
		byte oldSignificanceOfReferenceTime = significanceOfReferenceTime;
		significanceOfReferenceTime = newSignificanceOfReferenceTime;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__SIGNIFICANCE_OF_REFERENCE_TIME, oldSignificanceOfReferenceTime, significanceOfReferenceTime));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public short getYear() {
		return year;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setYear(short newYear) {
		short oldYear = year;
		year = newYear;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__YEAR, oldYear, year));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getMonth() {
		return month;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMonth(byte newMonth) {
		byte oldMonth = month;
		month = newMonth;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__MONTH, oldMonth, month));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getDay() {
		return day;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDay(byte newDay) {
		byte oldDay = day;
		day = newDay;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__DAY, oldDay, day));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getHour() {
		return hour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setHour(byte newHour) {
		byte oldHour = hour;
		hour = newHour;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__HOUR, oldHour, hour));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getMinute() {
		return minute;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinute(byte newMinute) {
		byte oldMinute = minute;
		minute = newMinute;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__MINUTE, oldMinute, minute));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getSecond() {
		return second;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSecond(byte newSecond) {
		byte oldSecond = second;
		second = newSecond;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__SECOND, oldSecond, second));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getProductionStatus() {
		return productionStatus;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setProductionStatus(byte newProductionStatus) {
		byte oldProductionStatus = productionStatus;
		productionStatus = newProductionStatus;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__PRODUCTION_STATUS, oldProductionStatus, productionStatus));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getTypeOfData() {
		return typeOfData;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeOfData(byte newTypeOfData) {
		byte oldTypeOfData = typeOfData;
		typeOfData = newTypeOfData;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, SectionsPackage.IDENTIFICATION_SECTION__TYPE_OF_DATA, oldTypeOfData, typeOfData));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case SectionsPackage.IDENTIFICATION_SECTION__START_OFFSET:
				return getStartOffset();
			case SectionsPackage.IDENTIFICATION_SECTION__END_OFFSET:
				return getEndOffset();
			case SectionsPackage.IDENTIFICATION_SECTION__LENGTH:
				return getLength();
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_CENTRE:
				return getIdentificationOfOriginatingCentre();
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_SUBCENTRE:
				return getIdentificationOfOriginatingSubcentre();
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_MASTER_TABLES_VERSION:
				return getGribMasterTablesVersion();
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_LOCAL_TABLES_VERSION:
				return getGribLocalTablesVersion();
			case SectionsPackage.IDENTIFICATION_SECTION__SIGNIFICANCE_OF_REFERENCE_TIME:
				return getSignificanceOfReferenceTime();
			case SectionsPackage.IDENTIFICATION_SECTION__YEAR:
				return getYear();
			case SectionsPackage.IDENTIFICATION_SECTION__MONTH:
				return getMonth();
			case SectionsPackage.IDENTIFICATION_SECTION__DAY:
				return getDay();
			case SectionsPackage.IDENTIFICATION_SECTION__HOUR:
				return getHour();
			case SectionsPackage.IDENTIFICATION_SECTION__MINUTE:
				return getMinute();
			case SectionsPackage.IDENTIFICATION_SECTION__SECOND:
				return getSecond();
			case SectionsPackage.IDENTIFICATION_SECTION__PRODUCTION_STATUS:
				return getProductionStatus();
			case SectionsPackage.IDENTIFICATION_SECTION__TYPE_OF_DATA:
				return getTypeOfData();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case SectionsPackage.IDENTIFICATION_SECTION__START_OFFSET:
				setStartOffset((Long)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__END_OFFSET:
				setEndOffset((Long)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__LENGTH:
				setLength((Integer)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_CENTRE:
				setIdentificationOfOriginatingCentre((Short)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_SUBCENTRE:
				setIdentificationOfOriginatingSubcentre((Short)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_MASTER_TABLES_VERSION:
				setGribMasterTablesVersion((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_LOCAL_TABLES_VERSION:
				setGribLocalTablesVersion((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__SIGNIFICANCE_OF_REFERENCE_TIME:
				setSignificanceOfReferenceTime((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__YEAR:
				setYear((Short)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__MONTH:
				setMonth((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__DAY:
				setDay((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__HOUR:
				setHour((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__MINUTE:
				setMinute((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__SECOND:
				setSecond((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__PRODUCTION_STATUS:
				setProductionStatus((Byte)newValue);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__TYPE_OF_DATA:
				setTypeOfData((Byte)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case SectionsPackage.IDENTIFICATION_SECTION__START_OFFSET:
				setStartOffset(START_OFFSET_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__END_OFFSET:
				setEndOffset(END_OFFSET_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__LENGTH:
				setLength(LENGTH_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_CENTRE:
				setIdentificationOfOriginatingCentre(IDENTIFICATION_OF_ORIGINATING_CENTRE_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_SUBCENTRE:
				setIdentificationOfOriginatingSubcentre(IDENTIFICATION_OF_ORIGINATING_SUBCENTRE_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_MASTER_TABLES_VERSION:
				setGribMasterTablesVersion(GRIB_MASTER_TABLES_VERSION_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_LOCAL_TABLES_VERSION:
				setGribLocalTablesVersion(GRIB_LOCAL_TABLES_VERSION_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__SIGNIFICANCE_OF_REFERENCE_TIME:
				setSignificanceOfReferenceTime(SIGNIFICANCE_OF_REFERENCE_TIME_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__YEAR:
				setYear(YEAR_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__MONTH:
				setMonth(MONTH_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__DAY:
				setDay(DAY_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__HOUR:
				setHour(HOUR_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__MINUTE:
				setMinute(MINUTE_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__SECOND:
				setSecond(SECOND_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__PRODUCTION_STATUS:
				setProductionStatus(PRODUCTION_STATUS_EDEFAULT);
				return;
			case SectionsPackage.IDENTIFICATION_SECTION__TYPE_OF_DATA:
				setTypeOfData(TYPE_OF_DATA_EDEFAULT);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case SectionsPackage.IDENTIFICATION_SECTION__START_OFFSET:
				return startOffset != START_OFFSET_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__END_OFFSET:
				return endOffset != END_OFFSET_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__LENGTH:
				return length != LENGTH_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_CENTRE:
				return identificationOfOriginatingCentre != IDENTIFICATION_OF_ORIGINATING_CENTRE_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_SUBCENTRE:
				return identificationOfOriginatingSubcentre != IDENTIFICATION_OF_ORIGINATING_SUBCENTRE_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_MASTER_TABLES_VERSION:
				return gribMasterTablesVersion != GRIB_MASTER_TABLES_VERSION_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__GRIB_LOCAL_TABLES_VERSION:
				return gribLocalTablesVersion != GRIB_LOCAL_TABLES_VERSION_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__SIGNIFICANCE_OF_REFERENCE_TIME:
				return significanceOfReferenceTime != SIGNIFICANCE_OF_REFERENCE_TIME_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__YEAR:
				return year != YEAR_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__MONTH:
				return month != MONTH_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__DAY:
				return day != DAY_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__HOUR:
				return hour != HOUR_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__MINUTE:
				return minute != MINUTE_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__SECOND:
				return second != SECOND_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__PRODUCTION_STATUS:
				return productionStatus != PRODUCTION_STATUS_EDEFAULT;
			case SectionsPackage.IDENTIFICATION_SECTION__TYPE_OF_DATA:
				return typeOfData != TYPE_OF_DATA_EDEFAULT;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (startOffset: "); //$NON-NLS-1$
		result.append(startOffset);
		result.append(", endOffset: "); //$NON-NLS-1$
		result.append(endOffset);
		result.append(", length: "); //$NON-NLS-1$
		result.append(length);
		result.append(", identificationOfOriginatingCentre: "); //$NON-NLS-1$
		result.append(identificationOfOriginatingCentre);
		result.append(", identificationOfOriginatingSubcentre: "); //$NON-NLS-1$
		result.append(identificationOfOriginatingSubcentre);
		result.append(", gribMasterTablesVersion: "); //$NON-NLS-1$
		result.append(gribMasterTablesVersion);
		result.append(", gribLocalTablesVersion: "); //$NON-NLS-1$
		result.append(gribLocalTablesVersion);
		result.append(", significanceOfReferenceTime: "); //$NON-NLS-1$
		result.append(significanceOfReferenceTime);
		result.append(", year: "); //$NON-NLS-1$
		result.append(year);
		result.append(", month: "); //$NON-NLS-1$
		result.append(month);
		result.append(", day: "); //$NON-NLS-1$
		result.append(day);
		result.append(", hour: "); //$NON-NLS-1$
		result.append(hour);
		result.append(", minute: "); //$NON-NLS-1$
		result.append(minute);
		result.append(", second: "); //$NON-NLS-1$
		result.append(second);
		result.append(", productionStatus: "); //$NON-NLS-1$
		result.append(productionStatus);
		result.append(", typeOfData: "); //$NON-NLS-1$
		result.append(typeOfData);
		result.append(')');
		return result.toString();
	}

	/* (non-Javadoc)
	 * @see org.mro.grib.model.files.secondEdition.sections.IdentificationSection#initialise(java.nio.ByteBuffer)
	 */
	@Override
	public void initialise(ByteBuffer buffer) {
		identificationOfOriginatingCentre = buffer.getShort();
		identificationOfOriginatingSubcentre = buffer.getShort();
		gribMasterTablesVersion = buffer.get();
		gribLocalTablesVersion = buffer.get();
		significanceOfReferenceTime = buffer.get();
		year = buffer.getShort();
		month = buffer.get();
		day = buffer.get();
		hour = buffer.get();
		minute = buffer.get();
		second = buffer.get();
		productionStatus = buffer.get();
		typeOfData = buffer.get();
	}

} //IdentificationSectionImpl
